<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// await 表达式   async 函数
	// async函数一般在函数体内要使用await表达式（async与await要结合使用）
	// async函数体内可以没有await 表达式，但是await表达式只能在async函数中使用。
	
	
	{
		// 1- await右侧的内容一般是Promise实例
		// 2- await后面的代码会异步执行。
		// const fn = async function(){
		// 	let result = await 1;// let result = 1
		// 	console.log(result);
		// }
		// fn();
		// console.log(2);// 2 1
	}
	{
		// const my = function(){
		// 	console.log(1);
		// 	return 2;
		// }
		// const fn = async function(){
		// 	let result = await my();
		// 	console.log(result)
		// }
		// fn();
		// console.log(3);// 1 3 2
	}
	{
		const fn = async function(){
			// await 右侧如果是非Promise,那么相当于没写。
			// const result = await 1;
			
			// await 右侧如果是Promise实例，如果实例状态为成功，会将成功值赋值给result
			// const result = await Promise.resolve(100);
			// console.log(result);// 100
			
			// await 右侧如果是一个失败的Promise实例，会抛出异常，失败的值即是异常信息
			const result = await Promise.reject(200);// 抛出了一个异常，异常值为200
			console.log(111111,result);// 49行代码会不会执行？如果会5 ，不会执行0
		}
		const p = fn();
		console.log(p);// rejected 200
	}
	
	{
		const fn = async function(){
			throw "异常";// 1- 将fn函数返回的Promise实例状态设置为失败，失败值为异常  2- async函数后面的程序不会执行
			console.log(1);
		}
		fn();
		console.log(2);
	}
</script>
</html>